podman 容器操作(下) | 您所在的位置:网站首页 › docker容器操作系统 宿主机操作系统 › podman 容器操作(下) |
一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第4天,点击查看活动详情。 由于清明回老家了,服务器在租房那里没带回来,所以我在自己家里的centos上安装了一个podman 3.4.4 使用 podman inspect可以显示对象的元数据 可操作的对象包括 容器(container) 、镜像(image)、网络(network)、pod、存储卷(volume) 命令分别为 podman container inspect podman image inspect podman network inspect podman pod inspect podman volume inspect 获取容器的ip地址我们启动nginx容器 命令podman run -d --name mynginx -p 9090:80 nginx 意思为启动一个容器,并且将容器名称命名为 mynginx且将宿主机9090映射至容器的80端口 我们使用 podman container mynginx查看一下 容器的元数据信息 使用 -f可以获取指定的信息 例如: 获取名称 和 ip地址 podman container inspect -f '{{.Name}}' mynginx podman container inspect -f '{{.NetworkSettings.IPAddress}}' mynginx -f {{}}格式化输出,中编写变量,其逻辑为直接定义inspect中的信息,例如: 上述获取ip地址的逻辑为 查询 inspect 中的 NetworkSettings 中的 IPAddress , 我们将数据格式化后可得 比如,我们想获取Mac地址,-f 为: '{{.NetworkSettings.MacAddress}}' 其他资源类似,甚至你可以省略资源,只用写名称,因为podman名称是唯一的 例如: 创建一个卷命名为 mydisk,并且查看 mydisk 的元数据 和 mynginx 的 Mac 地址 之前我们使用 -v挂载卷(volume) ,其实它还可以挂载宿主机目录 我们还可以使用mount来映射整个容器的目录 挂载nginx html目录命令 mkdir -p /root/html/ echo 'juejin pdudo test' > /root/html/index.html podman run -d --name mynginx2 -v /root/html:/usr/share/nginx/html -p 9091:80 nginx a88e38a954130f24010693cbd9867eabcd4a1de7a63612b810ef2f6edf47aa30 podman container inspect -f '{{.NetworkSettings.IPAddress}}' mynginx2挂载成果,访问网站,成功输出 juejin pdudo test 注意事项 -v 前面参数是宿主机目录 后面参数是容器中的目录 宿主机目录需要使用绝对路径,否则podman会随机将容器中的目录给映射到宿主机上 查看挂载信息 podman inspect -f '{{.Mounts}}' mynginx2 使用 -f输出的不太好看,我们直接使用 inspect往上翻翻看 宿主机必须要绝对路径 挂载文件这次我们将 /dev/log 挂载到 容器中,并且在容器中输出log,我们观察宿主机是否出现日志 命令 podman run --name myalpine -v /dev/log:/dev/log alpine logger 'juejin pdudo test' journalctl | grep juejin宿主机日志果然出现了 juejin pdudo test 所以,-v不仅能够挂载目录,还能够挂载文件(linux 一切皆文件) 将整个容器根系统映射出来我们使用podman mount可以将整个容器文件系统挂载到宿主机上 例如如下,我们启动一个nginx容器,并且将该容器的文件系统挂载出来,我们更具挂载出来的路径,我们成功修改了容器的内文件的内容。 在创建容器时,可以使用--ip指定ip地址 设置nginx容器ip地址运行nginx容器,将其地址设置为10.88.0.99 在日常工作中,我们经常有容器不经常使用,但是又必须存在的时候,为避免误操作(podman rm),我们可以打包放在本地,在需要容器的时候,我们在导入到镜像中即可。 导出容器我们将nginx5容器给导出来 命令 podman export -o tarball名称 容器ID 我们查看容器信息 我们导出mynginx5容器 我们将上次导出的容器,导入到镜像中 我们可以看到,导入成功后,名称为: localhost/mynginx,我们需要的时候,直接运行就可以了。 心得体会 获取元数据获取元数据,在日常工作中,作为排查问题非常有效,例如 之前测试 -v挂载,我宿主机忘记了写绝对路径了,导致实验结果不对,通过查询元数据才发现的。 当我们挂载了相对路径的目录后 我们查询元数据,就可以发现异常 我们挂载的宿主机的html名称,而挂载点变为了/var/lib/containers/storage/volumes/html/_data 通过这2天的学习,简而言之,如果会docker,那么入手podman简直得心应手,我使用了一圈下来,发现 podman不能说很像docker,简直是一模一样,之所以可以豪气的定义别名alias docker=podman,原来是有底气的,不得不说,运维也在卷了,说不定再过一段时间,你会看到这道面试题: "你认为Podman和Docker有什么区别? Podman优势在哪里? "。 |
CopyRight 2018-2019 实验室设备网 版权所有 |